﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Xpus.YouYTube.Utility
{
	/// <summary>
	/// 为字符串提供扩展功能。
	/// </summary>
	public static class TStringUtility
	{
		/// <summary>
		/// 在限制字符串长度时使用的默认省略号。
		/// </summary>
		const string DefaultEllipsis = "...";

		/// <summary>
		/// 将字符串限制在一定长度内，多余部分用省略号“...”补齐。
		/// </summary>
		/// <param name="s">待限定的字符串。</param>
		/// <param name="maxLength">最大长度。</param>
		/// <returns>长度不超过maxLength的字符串。</returns>
		public static string LimitLength(this string s, int maxLength)
		{
			return LimitLength(s, maxLength, DefaultEllipsis);
		}

		/// <summary>
		/// 将字符串限制在一定长度内，多余部分用省略号补齐。
		/// </summary>
		/// <param name="s">待限定的字符串。</param>
		/// <param name="maxLength">最大长度。</param>
		/// <returns>长度不超过maxLength的字符串。</returns>
		public static string LimitLength(this string s, int maxLength, string ellipsis)
		{
			if (s == null)
				throw new ArgumentNullException("字符串不能为null。");

			if (ellipsis == null)
				ellipsis = "";

			if (maxLength <= ellipsis.Length)
				throw new ArgumentException("最大长度太短，至少要比省略号长度长。");

			if (s.Length <= maxLength)
				return s;

			return string.Format("{0}{1}", s.Substring(0, maxLength - ellipsis.Length), ellipsis);
		}
	}
}
